//
//  FCZNetWorkRequestManager.m
//  EPA
//
//  Created by lanou3g on 16/4/15.
//  Copyright © 2016年 ZFC. All rights reserved.
//

#import "FCZNetWorkRequestManager.h"

@interface FCZNetWorkRequestManager()//延展
////存储回调block的属性
//@property (nonatomic,copy)ResultBlock block;

@end
@implementation FCZNetWorkRequestManager
//单例方法
+(instancetype)defaultManager{
    static FCZNetWorkRequestManager *manager = nil;
    @synchronized(self) {
        if (!manager) {
            manager = [[FCZNetWorkRequestManager alloc]init];
            
        }
    }
    return manager;
    
}

//请求方法
+(void)requestUrl:(NSURL *)url Method:(URLRequestMethod)method Params:(NSDictionary *)param Result:(ResultBlock)resultBlock{
    //空的可变字符串
    NSMutableString *urlString = [NSMutableString new];
    
    if ([url isKindOfClass:[NSURL class]]) {
        //拼接url
        [urlString appendString:url.absoluteString];
        
    }else if ([url isKindOfClass:[NSString class]]){
        
        [urlString appendString:(NSString *)url];
        
    }
    if (urlString.length ==0) {
        NSError *error = [NSError errorWithDomain:@"EPA" code:251 userInfo:@{@"reason":@"你输入的网址不正确"}];
        resultBlock(nil,nil,error);
        
        return;
    }
    
    
    
    //把参数字典变成字符串
    FCZNetWorkRequestManager *manager = [FCZNetWorkRequestManager new];
    
    
    NSString *paraStr = [manager strFromDict:param];
    switch (method) {
        case CK_GET:{
            
            
            if (paraStr.length>0) {
                [urlString appendFormat:@"?%@",paraStr];
                
            }
            
            [urlString appendString:paraStr];
            [manager  requestURL:[NSURL URLWithString:urlString]resultBlock:resultBlock];
             }
            break;
       
        case CK_POST:
            [manager postURL:urlString ParaStr:paraStr  ResultBlock:resultBlock];
            
       
            
            break;
            
        default:
            break;
    }
    
    
}

//Get 网络请求
-(void)requestURL:(NSURL *)url  resultBlock:(ResultBlock)block {
    
    
    NSURLSessionDataTask *dataTask = [[NSURLSession sharedSession]dataTaskWithURL:url completionHandler:block];
      
    
    //开始网络请求
    [dataTask resume];
    
    
}






//Post  网络请求

- (void)postURL:(NSString *)urlStr ParaStr:(NSString *)paraStr ResultBlock:(ResultBlock)block{
    //创建NSURL
    NSURL *url = [NSURL URLWithString:urlStr];
    //创建可变请求
    NSMutableURLRequest *mRequest = [NSMutableURLRequest requestWithURL:url];
    //设置POST方法
    [mRequest setHTTPMethod:@"POST"];
    //请求体
    [mRequest setHTTPBody:[paraStr dataUsingEncoding:NSUTF8StringEncoding]];
  //  __weak typeof (self)weakSelf = self;
    NSURLSessionDataTask *dataTask = [[NSURLSession sharedSession]dataTaskWithRequest:mRequest completionHandler:block];
    [dataTask resume];
    
}








- (NSString *)strFromDict:(NSDictionary *)dict{
    
    
    //空数组
    NSMutableArray *array = [NSMutableArray new];
    
    for (NSString *key in dict) {
        
        
        NSString *str = [NSString stringWithFormat:@"%@= %@",key,dict[key]];
        [array addObject:str];
      }
    
    //数组拼接字符串
    
    NSString *para = [array componentsJoinedByString:@"&"];
    NSLog(@"%@",para);
    
    //返回
    return para;
    
    
    
}
@end
